/*                                  ATELIER                                   */

/* %%LICENSE_TAG%%                                                            */
package edu.gmu.view.canvas;

import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JPanel;

/**
 * A Layer performs various drawing operations on the AnimatedComponent
 * using the passed Graphics object.
 */
public interface Layer
{
    /**
     * Set this objects visible property.
     * 
     * @param visible
     */
    public void setVisible( boolean visible );
    
    /**
     * Get this objects visible property.
     * 
     * @return boolean true to draw (i.e. paintToLayer)
     */
    public boolean getVisible();
    
    /**
     * Get this objects visible property.
     * 
     * @return boolean true to draw (i.e. paintToLayer)
     */
    public boolean isVisible();

    /**
     * Sets controlPanel.
     *
     * @param controlPanel
     */
    public void setControlPanel( JPanel controlPanel );

    /**
     * Gets controlPanel
     *
     * @return controlPanel
     */
    public JPanel getControlPanel( );
    
    /**
     * Sets name for the Layer.
     * 
     * @param name
     */
    public void setName( String name );
    
    /**
     * Gets the name for the Layer.
     *
     * @return String name
     */
    public String getName( );
    
    
    /*********************************************************************
     * Paints images on specified Component object using passed Graphics.
     *
     * @param component 
     * @param graphics
     *********************************************************************/
    public void paintLayer( JComponent  component, Graphics2D  graphics );
    
}

/*                                  ATELIER                                   */